from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import time

# 配置Chrome选项
chrome_options = Options()
# chrome_options.add_argument("--headless")  # 无头模式，如需隐藏浏览器窗口可取消注释
chrome_options.add_argument("--start-maximized")  # 启动时最大化窗口
chrome_options.add_argument("--no-sandbox")  # 解决部分环境下的权限问题
chrome_options.add_argument("--disable-dev-shm-usage")  # 禁用开发者共享内存

# 初始化Chrome驱动
driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=chrome_options
)

# 校园网登录页面URL（请根据实际情况修改）
login_url = "http://202.201.252.10/srun_portal_pc?ac_id=4&theme=pro"

# 登录信息（请替换为你的账号密码）
username = "107552503563"
password = "xju200430"
# 要选择的出口线路
target_line = "中国移动"

try:
    # 访问登录页面
    driver.get(login_url)
    time.sleep(2)  # 等待页面加载完成

    # 检查是否已登录（通过判断是否存在登录按钮来确定）
    login_buttons = driver.find_elements(By.XPATH, "//button[text()='登录']")
    if not login_buttons:
        print("检测到已处于登录状态，无需重复登录")
    else:
        print("未登录，开始执行登录流程...")

        # 选择出口线路（下拉菜单处理）
        try:
            # 找到出口线路的下拉菜单元素（请根据实际页面元素ID修改）
            line_select = Select(driver.find_element(By.ID, "line"))  # 假设下拉菜单的ID是"line"

            # 尝试通过可见文本选择"中国移动"
            line_select.select_by_visible_text(target_line)
            print(f"已选择出口线路: {target_line}")
            time.sleep(1)  # 等待选择生效
        except Exception as e:
            print(f"选择出口线路时出错: {e}")
            print("可能是下拉菜单元素定位方式不正确，请检查页面元素ID或XPATH")

        # 输入用户名
        driver.find_element(By.ID, "username").send_keys(username)
        # 输入密码
        driver.find_element(By.ID, "password").send_keys(password)

        # 点击登录按钮
        driver.find_element(By.XPATH, "//button[text()='登录']").click()
        print("登录请求已发送，等待结果...")
        time.sleep(3)  # 等待登录过程完成

except Exception as e:
    print(f"登录过程中发生错误: {str(e)}")
finally:
    # 等待几秒让用户查看结果，之后关闭浏览器
    time.sleep(2)
    driver.quit()
    print("操作完成，浏览器已关闭")
